RSS

カテゴリー別アーカイブ: C#

.NET Core 実行方法

アプリケーション用フォルダを作成する。mkdir app1
そのフォルダに移動する。cd app1
“dotnet new” を実行する。
成功したら “dotnet restore” を実行する。
成功したら “dotnet run” を実行する。コンパイルが行われてプログラムが実行される。

終わり

 

dotnet new
コンソール アプリのビルドに必要な NuGet 依存関係を含む最新の project.json ファイルを作成する。

dotnet restore
NuGet を参照して依存関係のツリーを復元

dotnet run
dotnet build を呼び出してビルド ターゲットがビルドされていることを確認した後、dotnet <assembly.dll> を呼び出してターゲット アプリケーションを実行する。

 

https://docs.microsoft.com/ja-jp/dotnet/articles/core/tutorials/using-with-xplat-cli

広告
 
コメントする

投稿者: : 2018/03/15 投稿先 C#

 

Yield と IEnumerable, IEnumerator

C#では yield return 文を使うと foreach 文の in 句に指定可能なレンジオブジェクトを作れます。Visual Basicでも Yield 文を使って同様のことができます。

C#では、IEnumerable インタフェースを実装したクラスのインスタンスが、in 句に指定可能なレンジオブジェクトになります。一方、Visual Basic では Iterator Function という関数がその代わりになります。この関数はIEnumerable(Of )を返す必要があります。

下のサンプルはC#で yield return を使うものですが、レンジオブジェクトになるクラス MyRange は IEnumerable を実装しています。IEnumerable は IEnumerator を返す GetEnumerator() メソッドを実装しなければなりません。このメソッドの中で、yield return を使って foreach 文で使われる項目を列挙します。

using System;
using System.Collections;

namespace Yield
{
  class MyRange : IEnumerable
  {
     object[] data;

     public MyRange()
     {
        data = new object[] { 100, "abc", -0.5, 0 };
     }
     public IEnumerator GetEnumerator()
     {
       int i = 0;
       while (i < data.Length)
       {
           i++;
           yield return data[i - 1];
       }
     }
  }
  class Program
  {
     static void Main(string[] args)
     {
        foreach (var x in new MyRange())
        {
            Console.WriteLine(x);
        }
#if DEBUG
        Console.ReadKey();
#endif
     }
   }
}

下のサンプルは Yield 文を使う Visual Basic の例です。C#ではIEnumerableインタフェースを実装したクラスを作成する必要がありましたが、Visual Basic では Iterator Function という関数を定義するだけです。
この関数は IEnumerable(Of ) 型を返し、その関数値は Yield文で列挙します。

' Yieldのテスト (Visual Basic)
Module Module1
Sub Main()
 For Each i In MyRange()
   Console.WriteLine(i)
 Next
 #If DEBUG Then
   Console.ReadKey()
 #End If
End Sub

Iterator Function MyRange() As IEnumerable(Of Integer)
   For i = 1 To 20 Step 3
     Yield i
   Next
End Function
End Module
 
コメントする

投稿者: : 2012/11/30 投稿先 C#, VB

 

FileSelector UserControl

using System;
 using System.Windows.Forms;
namespace UserControlLibrary
 {
 ///

 

/// ファイル・フォルダセレクタ コントロール ///

 

public partial class FileSelectorControl : UserControl
 {
    public FileSelectorControl()
    {
       InitializeComponent();
    }
///

 

/// 表示されるタイトル ///

 

public string Title
{
  get
  {
     return label1.Text;
  }
  set
  {
     label1.Text = value;
  }
 }
///

 

/// コントロールがロードされたとき ///

 

///
 ///
 private void FileSelectorControl_Load(object sender, EventArgs e)
 {
   DialogType = 0;
   Path = "";
   Extension = "";
   Filter = "";
   InitialDirectory = "";
 }
///

 

/// ボタンがクリックされたとき表示するダイアログのタイプ /// 0: OpenFileDialog /// 1: SaveFileDialog /// 2: FolderBrowserDialog ///

 

public int DialogType
 {
   get;
   set;
 }
///

 

/// パス名 ///

 

public string Path
 {
   get
   {
     return textBox1.Text;
   }
   set
   {
     textBox1.Text = value;
   }
 }
///

 

/// OpenFileDialog / SaveFileDialog のFilter ///

 

public string Filter
 {
   get;
   set;
 }
///

 

/// OpenFileDialog / SaveFileDialog のExtension ///

 

public string Extension
 {
 get;
 set;
 }
///

 

/// OpenFileDialog / SaveFileDialog のInitialDirectory ///

 

public string InitialDirectory
 {
 get;
 set;
 }
///

 

/// ボタンがクリックされたとき ///

 

///
 ///
 private void button1_Click(object sender, EventArgs e)
 {
 switch (DialogType)
 {
 case 1: // SaveFileDialog
 saveFileDialog1.FileName = Path;
 saveFileDialog1.InitialDirectory = InitialDirectory;
 saveFileDialog1.Filter = Filter;
 saveFileDialog1.DefaultExt = Extension;
 if (saveFileDialog1.ShowDialog() == DialogResult.OK)
 {
 textBox1.Text = saveFileDialog1.FileName;
 }
 break;
case 2: // FolderBrowserDialog
 if (Path == "")
 {
 folderBrowserDialog1.SelectedPath = InitialDirectory;
 }
 else
 {
 folderBrowserDialog1.SelectedPath = Path;
 }
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
 {
 textBox1.Text = folderBrowserDialog1.SelectedPath;
 }
 break;
default: // OpenFileDialog
 openFileDialog1.FileName = Path;
 openFileDialog1.InitialDirectory = InitialDirectory;
 openFileDialog1.Filter = Filter;
 openFileDialog1.DefaultExt = Extension;
 if (openFileDialog1.ShowDialog() == DialogResult.OK)
 {
 textBox1.Text = openFileDialog1.FileName;
 }
 break;
 }
 }
///

 

/// ドラッグ開始 ///

 

///
 ///
 private void FileSelectorControl_DragEnter(object sender, DragEventArgs e)
 {
 if (e.Data.GetDataPresent(DataFormats.FileDrop))
 {
 e.Effect = DragDropEffects.Copy;
 }
 }
///

 

/// ドラッグ中 ///

 

///
 ///
 private void FileSelectorControl_DragOver(object sender, DragEventArgs e)
 {
 if (e.Data.GetDataPresent(DataFormats.FileDrop))
 {
 e.Effect = DragDropEffects.Copy;
 }
 }
///

 

/// ドロップ ///

 

///
 ///
 private void FileSelectorControl_DragDrop(object sender, DragEventArgs e)
 {
 if (e.Data.GetDataPresent(DataFormats.FileDrop))
 {
 string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
 textBox1.Text = files[0];
 }
 }
 }
 }
 
コメントする

投稿者: : 2011/12/21 投稿先 C#

 

タグ: ,

EditText UserControl

using System.Windows.Forms;

namespace UserControlLibrary
{
///

/// ラベル付きテキストボックス
///

 

public partial class EditText : UserControl
{
public EditText()
{
InitializeComponent();
}

///

/// テキストボックスの値
///

 

public string TextValue
{
get
{
return textBox1.Text;
}

set
{
textBox1.Text = value;
}
}

///

/// ラベルの値
///

 

public string LabelValue
{
get
{
return label1.Text;
}

set
{
label1.Text = value;
}
}

///

/// エラー表示 (getは常に””を返す)
///

 

public string Error
{
get
{
return “”;
}

set
{
errorProvider1.SetError(textBox1, value);
}
}

///

/// テキストボックスの左端からの位置
///

 

public int MarginText
{
get
{
return textBox1.Left;
}

set
{
textBox1.Left = value;
}
}

///

/// エラーをクリアする。
///

 

public void ClearError()
{
errorProvider1.Clear();
}

}
}

 
コメントする

投稿者: : 2011/12/21 投稿先 C#

 

タグ: ,

OKCancelボタン UserControl

using System;
using System.Windows.Forms;

namespace UserControlLibrary
{
///

/// OK / Cancelボタン
///

 

public partial class OKCancel : UserControl
{
public enum Buttons { OK, CANCEL };
public delegate void OKCancelDelegate(Buttons sender);
public event OKCancelDelegate ButtonClick = null;

public OKCancel()
{
InitializeComponent();
}

///

/// OKボタンの文字列
///

 

public string OKText
{
get
{
return btnOK.Text;

}

set
{
btnOK.Text = value;
}
}

///

/// Cancelボタンの文字列
///

 

public string CancelText
{
get
{
return btnCancel.Text;
}

set
{
btnCancel.Text = value;
}
}

///

/// OKボタンがクリックされたとき
///

 

///
///
private void btnOK_Click(object sender, EventArgs e)
{
if (ButtonClick != null)
{
ButtonClick(Buttons.OK);
}
}

///

/// Cancelボタンがクリックされたとき
///

 

///
///
private void btnCancel_Click(object sender, EventArgs e)
{
if (ButtonClick != null)
{
ButtonClick(Buttons.CANCEL);
}
}
}
}

 
コメントする

投稿者: : 2011/12/21 投稿先 C#

 

タグ: ,

HttpWebRequestとHttpWebClient

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using MySettings = global::WebClient.Properties.Settings;

namespace WebClient
{
 public partial class Form1 : Form
 {
 delegate void SetTextCallback(string text);
 HttpWebRequest request = null;

 /// <summary>
 /// コンストラクタ
 /// </summary>
 public Form1()
 {
 InitializeComponent();
 }

 /// <summary>
 /// Enterが押されたとき
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
 {
 if (e.KeyChar == '\r')
 {
 if (MessageBox.Show(textBox1.Text + "へ要求を送信してよいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
 {
 MySettings.Default.LastInput = textBox1.Text;
 MySettings.Default.Save();
 this.Request();
 }
 }
 }

 /// <summary>
 /// ウェブサーバへ要求を送信する。
 /// </summary>
 private void Request()
 {
 object state = new object();
 this.request = HttpWebRequest.Create(textBox1.Text) as HttpWebRequest;
 IAsyncResult response = request.BeginGetResponse(
 delegate(IAsyncResult ar)
 {
 try
 {
 WebResponse wres = request.EndGetResponse(ar);
 Stream stream = wres.GetResponseStream();
 StreamReader rs = new StreamReader(stream, Encoding.Default);
 Char[] read = new Char[256];
 int count = rs.Read(read, 0, 256);
 StringBuilder sb = new StringBuilder();

 while (count > 0)
 {
 String str = new String(read, 0, count);
 sb.Append(str);
 count = rs.Read(read, 0, 256);
 }

 rs.Close();
 SetText(sb.ToString());
 }
 catch (Exception ex)
 {
 SetText("エラー:" + ex.Message);
 }
 }
 , state
 );
 }

 /// <summary>
 /// ワーカースレッドで文字列をtextBox2の表示文字列に設定する。
 /// </summary>
 /// <param name="text"></param>
 private void SetText(string text)
 {
 if (this.textBox2.InvokeRequired)
 {
 SetTextCallback d = new SetTextCallback(SetText);
 this.Invoke(d, new object[] { text });
 }
 else
 {
 this.textBox2.Text = text;
 }
 }


 /// <summary>
 /// フォームが開くとき
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Form1_Load(object sender, EventArgs e)
 {
 textBox1.Text = MySettings.Default.LastInput;
 }

 /// <summary>
 /// Requestボタン
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void button1_Click(object sender, EventArgs e)
 {
 try
 {
 MySettings.Default.LastInput = textBox1.Text;
 MySettings.Default.Save();
 this.Request();
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.Message, "エラー");
 }
 }
 }
}
 
1件のコメント

投稿者: : 2011/01/22 投稿先 C#

 

C#: OleDb PostgreSQL

 

using System;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.OleDb;

///<summery>
///メインクラス
///</summery>
public class Program
{
 ///<summery>メインメソッド</summery>
 ///<param>なし</param>
 ///<returns>なし</returns>
 public static void Main()
 {
 OleDbConnection conn = new OleDbConnection(GetConnString());
 conn.Open();
 OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM table1", conn);
 DataSet ds = new DataSet();
 adapter.Fill(ds);
 PrintData(ds);
 conn.Close();
 Console.WriteLine("End.");
 }

 ///<summery>接続文字列を作成</summery>
 ///<param>なし</param>
 ///<returns>接続文字列</returns>
 public static string GetConnString()
 {
 OleDbConnectionStringBuilder connString = new OleDbConnectionStringBuilder();
 connString["Provider"] = "PostgreSQL";
 connString["Data Source"] = "localhost";
 connString["Location"] = "test";
 connString["UID"] = "postgres";
 connString["PWD"] = "ATX2TX";
 connString["Timeout"] = "15";
 return connString.ToString();
 }

 ///<summery>データセット内のテーブル[0]を表示</summery>
 ///<param name="ds">データを表示するDataSet</param>
 ///<returns>なし</returns>
 public static void PrintData(DataSet ds)
 {
 DataRowCollection rows = ds.Tables[0].Rows;

 foreach (DataRow r in rows)
 {
 string code = r[0].ToString();
 string name = r[1].ToString();
 string count = r[2].ToString();
 Console.WriteLine(code + ", " + name + ", " + count);
 }
 }
}

 
コメントする

投稿者: : 2010/11/23 投稿先 C#

 

タグ: , ,