pgintro.net

C#

作成日時:2018/11/28

更新日時:2019/06/26

スポンサーリンク

メニュー

はじめにIntroduction | Microsoft Docs

拡張子取得

以下テストコードの変数extensionに.pngが格納されます。

using System.IO;

public class Sample {

  void Test () {
  var path = "/sample/path/test.png"
  var extension = Path.GetExtension(path);
  }
}

指定ディレクトリのファイル一覧取得

以下テストコードの変数filesに変数pathで指定したパスにあるファイルのリストが格納され、foreachループ等で確認等が行えます。

using System.IO;

public class Sample {

  void Test () {
  var path = "/sample/path"
  string[] files = Directory.GetFiles(path);
  foreach (string file in files)
  {

  }
  }
}

参考リンク

https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.getfiles?view=netframework-4.8

指定ディレクトリのサブディレクトリ一覧取得

以下テストコードの変数dirsに変数pathで指定したパスにあるサブディレクトリのリストが格納され、foreachループ等で確認等が行えます。

using System.IO;

public class Sample {

  void Test () {
  var path = "."
  string[] dirs = System.IO.Directory.GetDirectories(path);
  foreach (string dir in dirs)
  {

  }
  }
}

参考リンク

https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.getdirectories?view=netframework-4.8

リストのランダムシャッフル

using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;

public class Sample {

  void Test () {
  public List<int> list = new List<int>();
  list.Add(1);
  list.Add(2);
  list = list.OrderBy(a => Guid.NewGuid()).ToList();
  list.ForEach(delegate (int num)
  {

  });
  }
}

string型の配列をstring型に変換

区切り文字に改行コードを指定

string str = string.Join("\n", str_array);

文字列の先頭部分空白を削除

以下コードにて、変数str_afterには先頭の空白部分が削除されたテキストが格納されます。

string str = " 先頭に空白を含むテキスト";
string str_after = str.TrimStart(' ');

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.trimstart?view=netframework-4.8

パス文字列からファイル名取得

string path = "/usr/name/test/test.cs

// test.cs
string fileName = Path.GetFileName(path);

// .cs
string fileExtension = Path.GetExtension(path);

エラー

CS1012: Too many characters in character literal

確認バージョン

Unity Version 2018.2.14f1 Personal

Visual Studio Community 2017 for Mac Version 7.6.10 (build 27)

修正

文字リテラルを'で囲っていると発生、"で囲うように修正。

Debug.Log('Application.persistentDataPath' + Application.persistentDataPath);
Debug.Log("Application.persistentDataPath" + Application.persistentDataPath);

表示

error CS1012: Too many characters in character literal

CS1612: Cannot modify the return value of

https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-messages/cs1612

using System.Collections.Generic;

public class Sample
{
  struct STest
  {
  public int testParam;
  }
  
  void Test ()
  {
  STest sTest = new STest();
  sTest.testParam = 1;
  
  List<STest> cardPosList = new List<STest>();
  cardPosList.Add(sTest);
  
  for (int i = 0, max = cardPosList.Count; i < max; i++)
  {
    cardPosList[i].testParam = 2;
  }
  }
}

表示

Error CS1612: Cannot modify the return value of

Visual Studioで該当行にマウスオーバーした際には以下のような表示がされます。

変数ではないため、 'List<AnyTest.STest>.this[int]' の戻り値を変更できません

'IndexOf' はカルチャ対応で、StringComparison 引数がありません。

確認バージョン

Visual Studio Community 2017 for Mac Version 7.6.10 (build 27)

修正

StringComparison引数を追加

string test = "test";
int count = test.IndexOf("test");
string test = "test";
int count = test.IndexOf("test", System.StringComparison.CurrentCulture);

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.indexof?view=netframework-4.8

https://docs.microsoft.com/ja-jp/dotnet/api/system.stringcomparison?view=netframework-4.8