電子書籍の厳選無料作品が豊富!

こんにちは、

現在の環境はWindows7でVisualStudio2010を使用しています。
最近 Cシャープを勉強し始め、疑問に思い質問させていただきました。

クラスを作成し、そのクラスの実体化を行わないで、
クラスのメンバ変数やメンバ関数などがエラーなく使えてしまいました。
C++のときはビルドエラーになっていたのにCシャープでは
実体化を行わなくてもよいと言いうことですか?
回答お願いします

A 回答 (3件)

staticがついたメンバはインスタンスメンバではなくクラスメンバになります。


これは,C++でもC#でも同じです。

C++でビルドエラーになったというのは,単純にインスタンスメンバを呼び出していたからではないですか。
# C++ではクラスメンバへのアクセスはclass::memberという書式になります。
    • good
    • 0

どこにもインスタンスなしで使えてるインスタンスのメンバ関数やメンバ変数はないですが。


インスタンスのメンバ関数やメンバ変数と、クラスのメンバ関数やメンバ変数を混同されていませんか?
    • good
    • 0

具体的にはどのようなコードを書かれたのですか?


C++,C#どちらも、インスタンスのメンバ変数や関数はインスタンスなしには扱えません。

この回答への補足

以下がソースになります
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";

}

private void button1_Click(object sender, EventArgs e)
{

}

private void button2_Click(object sender, EventArgs e)
{


}

private void button3_Click(object sender, EventArgs e)
{

}

/* 加算 */
private void button5_Click(object sender, EventArgs e)
{
#region 加算処理
string buff = textBox1.Text;
if (!Validation.IsNumeric(buff))
{
MessageBox.Show("テキスト1に、数値以外の値が入力されています");
return;
}
double a = System.Convert.ToDouble(textBox1.Text);
buff = textBox2.Text;
if (!Validation.IsNumeric(buff)) //ここで実体化せずクラスの関数を直接記述してます。
{
MessageBox.Show("テキスト2に、数値以外の値が入力されています");
return;
}
double b = System.Convert.ToDouble(textBox2.Text);

double Kai = a + b;
textBox3.Text = System.Convert.ToString(Kai);
#endregion
}
  }
}


public sealed class Validation
{

#region IsNumeric メソッド (+1)

/// -----------------------------------------------------------------------------
/// <summary>
/// 文字列が数値であるかどうかを返します。</summary>
/// <param name="stTarget">
/// 検査対象となる文字列。<param>
/// <returns>
/// 指定した文字列が数値であれば true。それ以外は false。</returns>
/// -----------------------------------------------------------------------------
public static bool IsNumeric(string stTarget)
{
double dNullable;

return double.TryParse(
stTarget,
System.Globalization.NumberStyles.Any,
null,
out dNullable
);
}

/// -----------------------------------------------------------------------------
/// <summary>
/// オブジェクトが数値であるかどうかを返します。</summary>
/// <param name="oTarget">
/// 検査対象となるオブジェクト。<param>
/// <returns>
/// 指定したオブジェクトが数値であれば true。それ以外は false。</returns>
/// -----------------------------------------------------------------------------
public static bool IsNumeric(object oTarget)
{
return IsNumeric(oTarget.ToString());
}

#endregion

}


static class Constants
{
#region 定義
public const double PAI = 3.14159;
public const int SpeedOfLight = 300000; // km per sec.
#endregion
}

補足日時:2013/08/31 15:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!