アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#.net でプログラムを作成中です。

C++では定数等を#defineで定義していましたが、C#ではDefineは無いとの事です。

C#でC++の#Define に相当する事は出来ないのでしょうか。
やりたい事は 長い同じコマンドを別の文字で代替する事です。

もしC#に#Define文があったとして、以下の様な事を行いたいのです。

#Define NL printf("\n");

NL

このコーディングが展開した時、
 pritf("\n");
と展開される。

この様な事が出来る文をご存知の方、若しくはこの様な事は出来ないと言う事をご存知の方、よろしく御回答下さい。

よろしくお願い致します。

A 回答 (2件)

定数の定義では無く、どちらかというと「マクロ」としての機能をC#で使いたいと言うことですね。



結論から言うと、C++の#defineを使ったマクロは、C#では利用できません。
このようなマクロはバグの元になりやすいため、意図的にC#から削られています。

もし、汎用的に使えるような引数を渡したい…という事であれば、ジェネリックなどを使うと良いですよ。


ちなみに、単純な定数の定義であればconst、列挙体であればenumを使って定義できます。
    • good
    • 2
この回答へのお礼

ご回答、ありがとうございます。

C#ではC++の様なDefineは使用出来ない事が理解出来ました。
今回の目的は引数を渡すと言う事では無く、単純に他のライブラリー等の呼び出しを、自分のプログラムに関連した名前にしたかったものです。
しかし、代入が出来ないのであれば仕方がありませんので指定された名称で呼び出します。
ありがとうございました。

お礼日時:2014/10/02 21:07

#1です。



>やりたい事は 長い同じコマンドを別の文字で代替する事です。
特にマクロが利用したいわけでは無く、コマンド名(メソッド名)を短くして使いたいと言うことですね。

このような場合、別のメソッドを作って、その中から長い名前のメソッドを呼ぶようにすれば、とりあえず実現できます。
ただし、メソッドの括弧までは省略できません。

▼例
public void NL()
{
  Console.WriteLine(); // printf("\n")に相当
}

public void 任意のメソッド()
{
  // 処理~
  NL();
  // 処理~
}
    • good
    • 0

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