| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C Sharp サンプルコード」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
1行目: 1行目:
==C# サンプルコード==
+
==[[C# サンプルコード]]==
 
[[C Sharp]] | [[言語まとめ C Sharp]] |  
 
[[C Sharp]] | [[言語まとめ C Sharp]] |  
 
{{amazon|4873116503}}
 
{{amazon|4873116503}}
  
*C# Document http://msdn.microsoft.com/ja-jp/library/kx37x362.aspx
+
*[[C#]] Document http://msdn.microsoft.com/ja-jp/library/kx37x362.aspx
*.Net Class Library Reference http://msdn.microsoft.com/ja-jp/library/ms229335.aspx
+
*.Net Class Library [[R]]eference http://msdn.microsoft.com/ja-jp/library/ms229335.aspx
 
===ファイル===
 
===ファイル===
 
====ファイル名を抽出====
 
====ファイル名を抽出====
15行目: 15行目:
 
  }
 
  }
  
====エンコーディングを指定してファイルを読む====
+
====[[エンコーディング]]を指定してファイルを読む====
 
  using System;
 
  using System;
 
  using System.IO;
 
  using System.IO;
25行目: 25行目:
 
         {
 
         {
 
             string path = @"c:\work\test.csv";
 
             string path = @"c:\work\test.csv";
             using (var reader = new StreamReader(path, System.Text.Encoding.GetEncoding("shift_jis")))
+
             using (var reader = new Stream[[R]]eader(path, System.Text.Encoding.GetEncoding("shift_jis")))
 
             {
 
             {
 
                 string line = null;
 
                 string line = null;
                 while ((line = reader.ReadLine()) != null)
+
                 while ((line = reader.[[R]]eadLine()) != null)
 
                 {
 
                 {
 
                     Console.WriteLine(line);
 
                     Console.WriteLine(line);
39行目: 39行目:
 
*http://msdn.microsoft.com/ja-jp/library/x710fk43.aspx
 
*http://msdn.microsoft.com/ja-jp/library/x710fk43.aspx
 
*便利だが、どんな挙動をするのかよくわからない(どこにドキュメントがあるの?)
 
*便利だが、どんな挙動をするのかよくわからない(どこにドキュメントがあるの?)
**二重引用符で囲まれたフィールドでは、カンマはセパレータとしてではなく、値として判定してくれる(Excel仕様?)
+
**二重引用符で囲まれたフィールドでは、カンマはセパレータとしてではなく、値として判定してくれる([[Excel]]仕様?)
 
**なぜVisualBasic名前空間にある?
 
**なぜVisualBasic名前空間にある?
  
71行目: 71行目:
 
                 {
 
                 {
 
                     Console.WriteLine(e);
 
                     Console.WriteLine(e);
                     System.Environment.Exit(1);
+
                     System.En[[vi]]ronment.Exit(1);
 
                 }
 
                 }
 
             }
 
             }
94行目: 94行目:
 
  {
 
  {
 
     public FileEncodingConverter() {
 
     public FileEncodingConverter() {
         System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
+
         System.Text.Encoding.RegisterPro[[vi]]der(System.Text.CodePagesEncodingPro[[vi]]der.Instance);
 
     }
 
     }
 
   
 
   
102行目: 102行目:
 
     /// <param name="srcDir">変換元ディレクトリ</param>
 
     /// <param name="srcDir">変換元ディレクトリ</param>
 
     /// <param name="dstDir">変換先ディレクトリ</param>
 
     /// <param name="dstDir">変換先ディレクトリ</param>
     /// <param name="fromEnc">変換元エンコーディング</param>
+
     /// <param name="fromEnc">変換元[[エンコーディング]]</param>
     /// <param name="toEnc">変換後エンコーディング</param>
+
     /// <param name="toEnc">変換後[[エンコーディング]]</param>
 
     public void convertDir(string srcDir, string dstDir, string fromEnc, string toEnc)
 
     public void convertDir(string srcDir, string dstDir, string fromEnc, string toEnc)
 
     {
 
     {
124行目: 124行目:
 
     /// <param name="srcFile">変換元ファイル</param>
 
     /// <param name="srcFile">変換元ファイル</param>
 
     /// <param name="dstFile">変換後ファイル</param>
 
     /// <param name="dstFile">変換後ファイル</param>
     /// <param name="fromEnc">変換元エンコーディング</param>
+
     /// <param name="fromEnc">変換元[[エンコーディング]]</param>
     /// <param name="toEnc">変換後エンコーディング</param>
+
     /// <param name="toEnc">変換後[[エンコーディング]]</param>
 
     public void convert(string srcFile, string dstFile, string fromEnc, string toEnc)
 
     public void convert(string srcFile, string dstFile, string fromEnc, string toEnc)
 
     {
 
     {
 
         using(var writer = new StreamWriter(File.OpenWrite(dstFile),Encoding.GetEncoding(toEnc)))
 
         using(var writer = new StreamWriter(File.OpenWrite(dstFile),Encoding.GetEncoding(toEnc)))
 
         {
 
         {
             foreach(var line in File.ReadLines(srcFile, System.Text.Encoding.GetEncoding(fromEnc)))
+
             foreach(var line in File.[[R]]eadLines(srcFile, System.Text.Encoding.GetEncoding(fromEnc)))
 
             {
 
             {
 
                 writer.WriteLine(line);
 
                 writer.WriteLine(line);
139行目: 139行目:
  
 
===設定===
 
===設定===
====C# 設定情報を保存する====
+
====[[C# 設定情報を保存する]]====
*C# 設定情報を保存する
+
*[[C# 設定情報を保存する]]
  
 
===LINQ===
 
===LINQ===
====C# LINQ使用例====
+
====[[C# LINQ使用例]]====
*C# LINQ使用例
+
*[[C# LINQ使用例]]
 
===非同期処理===
 
===非同期処理===
====C# 非同期処理からUIスレッドにアクセスし画面を更新する====
+
====[[C# 非同期処理からUIスレッドにアクセスし画面を更新する]]====
*C# 非同期処理からUIスレッドにアクセスし画面を更新する
+
*[[C# 非同期処理からUIスレッドにアクセスし画面を更新する]]
====C# asyncとawaitの動作確認====
+
====[[C# asyncとawaitの動作確認]]====
*C# asyncとawaitの動作確認
+
*[[C# asyncとawaitの動作確認]]
===WPF===
+
===[[WPF]]===
 
*http://typea.info/blg/glob/wpf/
 
*http://typea.info/blg/glob/wpf/

2020年2月16日 (日) 04:22時点における版

C# サンプルコード

C Sharp | 言語まとめ C Sharp |

ファイル

ファイル名を抽出

var filename = Path.GetFileName(file);

ファイルを書く

using (var writer = new StreamWriter(Path.Combine(outPath, "Hoge.csv")))
{
    writer.WriteLine("Something to write.");
}

エンコーディングを指定してファイルを読む

using System;
using System.IO;
namespace ConsoleApplication1
{
     class Program
    {
        static void Main(string[] args)
        {
            string path = @"c:\work\test.csv";
            using (var reader = new StreamReader(path, System.Text.Encoding.GetEncoding("shift_jis")))
            {
                string line = null;
                while ((line = reader.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
    }
}

CSVファイルを解析(TextFieldParser)

  • http://msdn.microsoft.com/ja-jp/library/x710fk43.aspx
  • 便利だが、どんな挙動をするのかよくわからない(どこにドキュメントがあるの?)
    • 二重引用符で囲まれたフィールドでは、カンマはセパレータとしてではなく、値として判定してくれる(Excel仕様?)
    • なぜVisualBasic名前空間にある?
using System;
using Microsoft.VisualBasic.FileIO; 

namespace ConsoleApplication1
{
     class Program
    {
        static void Main(string[] args)
        {
            string path = @"c:\work\test.csv";
            using (TextFieldParser parser = new TextFieldParser(path,System.Text.Encoding.GetEncoding("shift_jis")))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");
                try
                {
                    while (!parser.EndOfData)
                    {
                        string[] fields = parser.ReadFields();
                        foreach (string field in fields)
                        {
                            Console.Write("[{0}]", field);
                        }
                        Console.WriteLine();
                    }
                }
                catch (MalformedLineException e)
                {
                    Console.WriteLine(e);
                    System.Environment.Exit(1);
                }
            }
        }
    }
}

UTF-8 エンコード BOMありなし

  • UTF-8をGetEncodeすると、BOMが付く。new System.Text.UTF8Encoding(false) でBOMなし
Encoding enc = null;
if(String.Equals(toEnc,"utf-8", StringComparison.OrdinalIgnoreCase)) {
    // BOMなし
    enc = new System.Text.UTF8Encoding(false);
}
else
{
    enc = Encoding.GetEncoding(toEnc);
}

ファイルエンコード一括変換

public class FileEncodingConverter
{
    public FileEncodingConverter() {
        System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
    }

    /// <summary>
    /// 指定されたディレクトリのすべてのファイルのエンコードを変換して別のディレクトリに書き出す
    /// </summary>
    /// <param name="srcDir">変換元ディレクトリ</param>
    /// <param name="dstDir">変換先ディレクトリ</param>
    /// <param name="fromEnc">変換元エンコーディング</param>
    /// <param name="toEnc">変換後エンコーディング</param>
    public void convertDir(string srcDir, string dstDir, string fromEnc, string toEnc)
    {
        if (!Directory.Exists(dstDir))
        {
            Directory.CreateDirectory(dstDir);
        }

        var files = Directory.GetFiles(srcDir);
        foreach(var file in files)
        {
            var filename = Path.GetFileName(file);
            convert(file, Path.Combine(dstDir, filename), fromEnc, toEnc);
        }
    }

    /// <summary>
    /// 指定されたファイルのエンコードを変換して別ファイルに書き出す
    /// </summary>
    /// <param name="srcFile">変換元ファイル</param>
    /// <param name="dstFile">変換後ファイル</param>
    /// <param name="fromEnc">変換元エンコーディング</param>
    /// <param name="toEnc">変換後エンコーディング</param>
    public void convert(string srcFile, string dstFile, string fromEnc, string toEnc)
    {
        using(var writer = new StreamWriter(File.OpenWrite(dstFile),Encoding.GetEncoding(toEnc)))
        {
            foreach(var line in File.ReadLines(srcFile, System.Text.Encoding.GetEncoding(fromEnc)))
            {
                writer.WriteLine(line);
            }
         }
    }
}

設定

C# 設定情報を保存する

LINQ

C# LINQ使用例

非同期処理

C# 非同期処理からUIスレッドにアクセスし画面を更新する

C# asyncとawaitの動作確認

WPF