C# クラスと構造体についてメモ
構造体とは
ある対象に関連する項目をまとめて1つのかたまりにしたもの
関連する項目はフィールド(メンバ変数)と呼ばれ、変数や文字列などをフィールドとする
ことができます。
フィールドを使い、処理を定義することが可能。
同じように項目をまとめて1つのかたまりにしたもので、配列があります。
配列の場合、同じ型のモノしか1つのかたまりにできません。
構造体はint型や文字列など型の違うモノでも1つのかたまりにできます。
構造体とクラスについて
共通点:
・インスタンス化して使用(インスタンス化して使用)
・メソッドの定義(フィールドだけでなく、メソッドを定義して処理を行うことが出来る)
・引数ありコンストラクタの定義(インスタンス化してフィールドの値を初期化する場合などに使用)
・インターフェースを実装(複数実装も可)
違い:
インスタンス化したオブジェクトの型。
構造体 クラス
オブジェクトの型 値型 参照型
クラスの継承 ※不可 可能
フィールド初期化子の使用 不可 可能
デフォルトコンストラクタ(引数の定義) 不可 可能
デストラクタの定義 不可 可能
※System.ValuTypeのみ継承継承元にはなれない
使い分け:
構造体は、制限がクラスに比べて多い分、軽量のオブジェクトを表すのに適している。
参照型の機能が必要ない場合は、
クラスとして実装するよりは構造体として定義した方が効率的に処理される
例えば、3次元の点座標を大量に扱うCGなどで使用する場合など。。。
続きを読む
エッセンシャルWPF_読んで、わからなかった用語_書き覚え
■GUIとは
Graphical User Interfaceの略。
コンピューターの画面上に表示されるウィンドウやアイコン、ボタン、プルダウンメニューなどを使い、マウスなどのポインティングデバイスで操作できるインターフェース。
■マネージオブジェクトモデルとは
マネージオブジェクトとは人により、認識のばらつきがあるようです。
分解して、和訳すると、
▼マネージ
管理すること。経営すること。処理すること
▼オブジェクト
操作の対象となっているデータ、または、オブジェクト指向の考え においてプログラムが扱う対象のこと
▼モデル
型。模型
■メッセージループとは
Windowsアプリケーションは、受け取ったメッセージを1つずつ処理する。すべてのメッセージを処理し終えると、また次のメッセージが来るのを待つ。
メッセージを待ち→受けとったらそれを処理→次のメッセージを待つ
これの一連の動作を、Windows用語で「メッセージ・ループ」と呼ぶ。
■CLR型システムとは
Common Language Runtimeの略。
共通言語ランタイムのシステムのこと。
■ウィジットとは
ホーム画面上で、ひと目で情報を得られるように小型化されたアプリのこと。
■オンデマンドとは
ユーザの要求があった際に、その容共に応じてサービスを提供すること
■バッファリングとは
複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補ったり、通信の減速や中断に備えて専用の記憶領域に送受信データを一時的に保存しておくこと
■ハングアップとは
動作中のコンピュータやソフトウェアが機能を停止し、操作を受け付けなくなったり外部からの通信に応答しなくなること
■サーフェスとは
面、表面、平面、水面、地表面、外見、上辺、(水面に)浮上する、表面化する、明るみに出る、平らにする、面をつける、などの意味を持つ英単語。
■ベクタベースとは
▼ベクタ
「方向と大きさ」のように、互いに独立な複数の異なる値の組み合わせとして表される量のこと。数学や物理学では、「ベクトル」のこと。
▼ベース
土台。基礎。基本。
■アンチエイリアシングとは
サンプリングやダウンサンプリングでエイリアシングが起きないようにするための処理
アナログ信号をサンプリングする際に起こる現象のこと。
▼サンプリング
標本化。リサンプリングの1つのこと。
連続信号を一定の間隔をおいて測定することにより、離散信号として収集すること。
▼連続信号
実数値の定義域(通常、時間)の関数として表される変化する値(信号)のこと。
▼リサンプリング
ある標本点系列でサンプリングされた信号を、別の標本点系列でサンプリングされた信号に変換すること
▼ダウンサンプリング
サンプリング周波数を下げる変換のこと。(対義語:アップサンプリング)
■レンダリングとは
データ記述言語やデータ構造で記述された抽象的で高次の情報から、コンピュータのプログラムを用いて画像・映像・音声などを生成すること
■ネストとは
あるものの中に、それと同じ形や種類のものが入っている状態や構造のこと。
■セマンティックスとは
「データの意味」のこと。データの「中身」を指すこと。
シンタックスとの関係がある。
■シンタックスとは
(データの形式や構造)に対応する概念。データの「枠組み」を指す。
セマンティックスとの関係がある。
■エンコーディングとは
ある形式のデータを別形式のデータに変換する。
■インラインコードとは
サブルーチンを呼び出すためのコードの代わりに、直接コード内に記述された、サブルーチンの内容のこと
■ディレクティブとは
XML名前空間を表す際に使われる<A:oo>のAの部分のこと。
例
<・・・xmls:プレフィックス="識別するためのURI">
・・
<プレフィックス:要素名>・・・・<プレフィックス:要素名>
■XMLパーサとは
XML形式の文書やアイルから、テキストデータの部分だけを抜き出して、プログラムやアプリケーションソフトが利用しやすい形に変換するためのプログラムまたはソフトウェアのこと。
■シームレスとは
継ぎ目のない状態のこと。
例:
アプリケーションソフトの中で、それぞれの機能が区切られることなく一貫して操作することが出来る状態などのこと。
■アクセラレートとは
「速力を速める」、「加速する」という意味。
オプションのハードウェアやソフトウェアを使いすることにより、システムの性能をさらに向上させる場合などに使われる。
■マテリアルとは
デバイスが変わっても使いやすいシームレスな概念。
■ボイラーレポートコードとは
言語仕様上省くことができない定型的なコードのこと。
本質的なロジックでないため、アプリケーションを実装するうえで冗長なコードとなる。
■インクルードとは
あるファイルの中に別のファイルに記述された内容を追加する機能のこと。
■オーサリングツールとは
文字や画像、音楽、動画など、いろいろな素材を組み合わせたソフトウェアを作成するツール。
コンピュータでいわゆるメディアコンテンツを作るためのアプリケーションソフトウェア。
AdobeDirectorがその代表。
C#_$文字列補間について
♦補間とは
数値表や観測で得られた値に基づいて、その間にある、表が載せないまたは観測していない数値に対する値を算出すること。
using
System.Windows;
namespace
ConsoleApp1{
class
Program
{
static void
Main(string[] args)
{
Random rnd = new Random();
int[] numbers = new int[4];
for (int ctr = 0; ctr <= 2; ctr++)
{
}
numbers[3] = total;
numbers.CopyTo(values, 0);
values);
}
}
}
C# 複合書式指定について_String.Format("{0}")
String.Formatメソッドとは?
第1引数に指定した書式で第2引数以降のオブジェクトを変換して出力表示する。
using
System.Windows;
namespace
ConsoleApp1{
class
Program
{
static void
Main(string[] args)
{
string format = String.Format("{0}", 10);
Console.WriteLine(format);
}
}
}
using
System.Windows;
namespace
ConsoleApp1{
class
Program
{
static void
Main(string[] args)
{
string format = String.Format("{{{0}}}", 10);
Console.WriteLine(format);
}
}
}
指定子 呼び名 説明
G General 一般
N Number 数値
F Fixed-point 固定小数点
E Exponential 指数
P Percent パーセント
D Decimal 10進数
X Hexadecimal 16進数の大文字
x Hexadecimal 16進数の小文字
C Currency 通貨
-----------------------------------------------------------------------------------------
■ カスタム書式指定子とは
数値を0埋めで出力したり、3桁で区切ることができる。
-----------------------------------------------------------------------------------------
# 桁プレースホルダ 桁数の指定
, 桁区切り記号 3桁区切り
. 小数点 小数点以下の桁数を指定
% パーセント パーセント表示
; セクション区切り記号 書式を複数指定する場合に区切りで使用
-----------------------------------------------------------------------------------------
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string args)
{
string names = { "Adam", "Bridgette", "Carla", "Daniel",
"Ebenezer", "Francine", "George" };
decimal[] hours = { 40, 6.667m, 40.39m, 82, 40.333m, 80,16.75m };
Console.WriteLine("{0,-20} {1,5}\n", "Name", "Hours");
for (int ctr = 0; ctr < names.Length; ctr++)
Console.WriteLine("{0,-20} {1,5:N1}", names[ctr], hours[ctr]);
}
}
}
XAML_簡単構成について_基礎知識
少なくとも2つの.xamlファイル(=拡張子が「.xaml」のファイル)が必要。
・ウィンドウを定義した.xamlファイル
・アプリケーションを定義した.xamlファイル
例1
・MainWindow.xaml(ウィンドウを定義した.xamlファイル)
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="MainWindow" Height="450" Width="800">
Hello World
</Window>
・app.xaml(アプリケーションを定義した.xamlファイル)
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
StartupUri="win.xaml"
/>
▼XAMLでは、プロジェクト・ファイル(.projファイル)を記述し、ビルド・ツール (MSBuild.exe)を使って実行ファイルを作成する。
--------------------------------------------------------------------------------------------------
ウィンドウ定義(MainWindow.xaml)とアプリケーション定義(app.xaml)とプロジェクト・ファイル(hello.proj)
⇊
ビルド・ツール(MSBuild.exe)
⇊
実行ファイル(HelloWorld.exe)
--------------------------------------------------------------------------------------------------
というexeファイル生成の流れ。
・XMLは、各要素が属する名前空間をxmlsという特別な属性を使って表す。
例2 --------------------------
<タグ1>
xmlns="MyNameSpace"
属性1="……" 属性2="……" >
<タグ2>
……
</タグ2>
</タグ1>
--------------------------------
例2においては、<タグ1>要素と、その子要素である<タグ2>要素はMyNameSpace名前空間に属していることを表している。
例1のMainWindow.xamlでは、
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
……
という名前空間に属していることを指示しています。
■ プロジェクト・ファイルの記述
(例) _プロジェクト・ファイル
--------------------------------------------------------------------------------------------------
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Build" >
<PropertyGroup>
<AssemblyName>HelloWorld</AssemblyName>
<OutputType>MainWindowexe</OutputType>
<OutputPath>.\</OutputPath>
</PropertyGroup>
<ItemGroup>
<ApplicationDefinition Include="app.xaml" />
<Page Include="MainWindow.xaml" />
<Reference Include="System" />
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
</Project>
--------------------------------------------------------------------------------------------------
<AssemblyName>HelloWorld</AssemblyName>
↑のタグは、.exeファイルに使用される名前。
<ApplicationDefinition Include="app.xaml" />
↑のタグは、アプリケーションを定義した.xamlファイル。
<Page Include="MainWindow.xaml" />
↑のタグは、アプリケーション定義が必要とする.xamlファイル。
WPF_C#_Xaml_基礎_DataContextを設定する方法
WPF:DataContextを設定する方法
■プロパティに設定する方法
・csファイルのコンストラクタにおいて、DataContextプロパティを直接設定する方法。
ViewModelを生成するだけでなく、初期設定等を行う場合
XAMLにDataContextを記載しないので、XAML上でDataContextに何が設定されているかあらかじめ知っている必要があることになる。
MainView.xaml.cs
namespace
WpfApplication.View
{
using
System.Windows;
public
partial
class
MainView : Window
{
public
MainView()
{
this
.InitializeComponent();
this
.DataContext =
new
WpfApplication.ViewModel.MainViewModel();
}
}
}
■XAMLに記載する方法
XAML上で設定する方法。
初期化時にあれこれはできないが、XAMLとコードがキレイに分離できている。
MainView.xaml
<
Window
x:Class
=
"WpfApplication.View.MainView"
xmlns:local
=
"clr-namespace:WpfApplication.ViewModel"
Title
=
"MainWindow"
Height
=
"125"
Width
=
"210"
>
<
Window.DataContext
>
<local
:MainViewModel
/>
</
Window.DataContext
>
<
Grid
>
</
Grid
>
</
Window
>
<Window
xmlns:local="clr-namespace:ここにネームスペース"
>
</Window>
xmlns:local="clr-namespace:ここにネームスペース"のnamespaceに含まれるクラスはビルドしておく。
<Window
xmlns:vm="clr-namespace:ここにネームスペース"
>
<Window.DataContext>
<local:ここにクラス名 />
</Window.DataContext>
</Window>