「C Sharpその他 - 使用すべき機能」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「== 概要 == <br><br> == 使用すべき機能 == ===== IEnumerableを使う ===== <span style="color:#C00000">'''ポイント : メソッドの引数や戻り値、プ…」) |
編集の要約なし |
||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
新しい構文やライブラリが導入されたことで、記述方法が変わったものがある。<br> | |||
ここでは、その記述方法をまとめる。<br> | |||
<br><br> | <br><br> | ||
2020年2月11日 (火) 01:10時点における版
概要
新しい構文やライブラリが導入されたことで、記述方法が変わったものがある。
ここでは、その記述方法をまとめる。
使用すべき機能
IEnumerableを使う
ポイント : メソッドの引数や戻り値、プロパティの型には、IEnumerable<T> を使う。
データ列に対して、前から順に1要素ずつ読む操作のみを行う場合、List<T>クラスや配列ではなく、IEnumerable<T>インターフェイスを使う。
// ダメなコード
// この記述では、配列の内容を書き換えられる
static readonly int[] SampleData = { 1, 2, 3, 4, 5 };
// 読み取り専用にも関わらず、int[]で受け取っている
static void Output(int[] data)
{
foreach (var x in data)
{
Console.WriteLine(x);
}
}
// 良いコード
// 読み取り専用なら、IEnumerableにする
static readonly IEnumerable<int> SampleData = { 1, 2, 3, 4, 5, };
// 上記と同様に、引数の型もIEnumerableにする
static void Output(IEnumerable<int> data)
{
foreach (var x in data)
{
Console.WriteLine(x);
}
}
XML
ポイント : XDocumentクラス(System.Xml.Linq名前空間)を使う。
C# 3.0/.NET 3.5にて、LINQが導入されたことで、データ処理においてIEnumerable<T>インターフェイスが特別な意味を持つようになった。
それに合わせて、XMLの読み書きのためにも、IEnumerableでXML要素一覧を読み出せるようなクラスが新たに追加された。
- 以前の記述方法
- .NET 3.0以前では、XmlDocumentクラス(System.Xml名前空間)を使っていた。
- 現在の記述方法
- .NET 3.5から、XDocumentクラスが追加された。IEnumerable<XElement>で要素一覧を読み出せるので、LINQ to Objectsが使える。
var doc = XDocument.Load(filename);
var ns = doc.Root.Name.Namespace;
var titles = from x in doc.Root.Elements(ns + "section")
select x.Attribute("title").Value;
foreach (var title in titles)
{
Console.WriteLine(title);
}
自動実装プロパティ
ポイント : フィールドをpublicにしてはいけない。自動実装プロパティを使用する。
後からの変更に備えて、ただフィールドを読み書きするだけのプロパティを作ることがある。
下記のようにすれば、後から処理を加えることになっても、 クラスの利用側の再コンパイルは不要である。
private int _x;
public int X
{
get;
set;
//get { return _x; }
//set { _x = value; }
}
また、外部からは読み取り専用なプロパティを作る場合は、以下のように記述する。
public int X
{
get;
private set;
}