数値型変数のC言語とC#のnullチェックについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みつ
記事: 9
登録日時: 5年前

数値型変数のC言語とC#のnullチェックについて

#1

投稿記事 by みつ » 5年前

CコードをC#に移行していますが、
数値型変数のC言語とC#のnullチェックについて
不明点があり質問しました。

下記コードです。

コード:

/ Cコード
int testA(int* sign,int* dm_d)
{
	if (sign == NULL) {
         return -1;
	}
	if (dm_d == NULL) {
         return -2;
	}
	return 0;
}
// C#コード
public int testA(out int sign,out int dm_d)
{
	// 下記でエラーとなる
	if (sign == NULL) {
         return -1;
	}
	if (dm_d == NULL) {
         return -2;
	}
	return 0;
}
Cコードでは数値型引数sign、dm_dに対して
nullチェックを行っているので
C#でも同様にnullチェックを行おうと思ったらエラーとなりました。
そもそも数値型引数に対してnullチェックは必要?と思いましたが、
何かチェック方法がございましたらご教授願います。

YuO
記事: 941
登録日時: 8年前
住所: 東京都世田谷区

Re: 数値型変数のC言語とC#のnullチェックについて

#2

投稿記事 by YuO » 5年前

みつ さんが書きました:Cコードでは数値型引数sign、dm_dに対して
nullチェックを行っているので
C#でも同様にnullチェックを行おうと思ったらエラーとなりました。
そもそも数値型引数に対してnullチェックは必要?と思いましたが、
何かチェック方法がございましたらご教授願います。
チェックは不要です。
outは呼び出し側でオブジェクトへの参照を用意する必要がありますが,それは強制され,コンパイル時にチェックされています。
これは値型でも参照型でも同じです。
オフトピック
参照型をoutにするというのは,

コード:

void func (struct class_type ** obj_ref);
のようなコードに相当し,obj_refがNULLでないことは言語レベル (CLIレベルかは確認していません) で保証されています。

アバター
せんちゃ
記事: 50
登録日時: 9年前
住所: 江別市東野幌町
連絡を取る:

Re: 数値型変数のC言語とC#のnullチェックについて

#3

投稿記事 by せんちゃ » 5年前

outで取った引数にnull判定は必要ないかと思われます。
ちょっと試しに自分の環境で試した感じだとそもそもoutパラメータは関数内で必ずなんらかの値を割り当てなければいけないようなので
null判定をする以前に割り当てられていない点でエラーが発生します。
場合によって割り当てられないけど参照渡ししたい、といった場合はrefが適切のようです
ヽ(*゚д゚)ノ カイバー

みつ
記事: 9
登録日時: 5年前

Re: 数値型変数のC言語とC#のnullチェックについて

#4

投稿記事 by みつ » 5年前

せんちゃさん、YuO さん回答ありがとうございます。

outで取った引数にnull判定は必要ないとの事で
チェック不要で進めていきます。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る