今までVBを使っており、C#は初心者です。
VBでは、各関数にまたがって使う変数は、
private Hensu as integer
Sub Kansuu1()
Hensu = 2
Call Kansuu2()
End Sub
Sub Kansuu2()
MsgBox Hensu
End Sub
と宣言すれば、使えますが、C#でそのような使い方はできないのでしょうか?
変数Hensu3をMainとMain2双方で使いたいとき、
using System;
namespace ns1
{
static class Program
{
public string Hensu3;
static void Main(string[] args)
{
・・・
}
static void Main2()
{
・・・
}
}
}
と書きましたが、ビルドエラーになります。
No.2
- 回答日時:
# ビルドエラーが出ているのならその内容を投稿しましょう
記憶域の違いでエラーになるんですよ
MainやMain2がstatic指定の静的関数に対し静的でないHensu3は変数にはアクセスできません
public static string Hensu3;
と宣言すれば 使えますよ
クラス宣言が staticクラスでなければインスタンス経由でなら静的でない変数にもアクセスできます
static void Main()
{
Program p1 = new Program();
p1.Hensu3 = "Hello";
Console.WriteLine( p1.Hensu3 );
}
といった具合です
ご回答をいただき、色々と試してみました。
ここ数日、クラスやインスタンスなど、復習してみた結果、
変数の使い方というより、C#の根本を勘違いしていたようです。
> public static string Hensu3;と宣言すれば 使えますよ
無事、使えるようになりました。
どうしても使わなければならないところで、public変数を使い、
それ以外では、ローカル変数を使うようにします。
詳しい説明をしていただき、ありがとうございました。
No.3ベストアンサー
- 回答日時:
>やはり引数で渡すようにします。
>なるべく引数が少なくて済むようなコーディングをしようと思います。
それがいいです。
引数が多くなるのは、恐らく以下のようなケースです。
・実際はオブジェクトとして一つにまとめるべきものが、ネイティブタイプとしてばらばらなままになっているため、それをひとずつメソッドに渡す破目になっている。
・一つのメソッドが色々な仕事をし過ぎてきる。分割すれば、個々のメソッドへの引数の数が減る。
お礼が遅くなりましたが、
koko_u_さんのアドバイスを取り入れ、大分マシなコードになってきました。
メソッド分割で、引数が減るのに加え、コードも見やすくなりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
public static void main (Stri...
-
Javaの文法
-
説明文書でのメソッド・変数の...
-
『クラス』と『メソッド』とは...
-
別クラスのmainメソッドの実行
-
javaに"search"という関数 or ...
-
クラスの継承の仕方
-
ArrayList の継承について(初...
-
エクセルVBAで、条件に一致する...
-
「エンクロージング型」と「外...
-
EXCEL VBAにて動的にCheckBOXを...
-
変数名の付け方
-
同じクラスにならない確率を教...
-
「タイプ初期化子が例外をスロ...
-
インスタンス参照でアクセスで...
-
VB.NETでフォーム上にExcelのよ...
-
配列の重複する値とその個数を...
-
VBAでvlookup関数から、別シー...
-
VB.NET フォーム上に描いたグ...
-
フォームのCheck boxとOLEObjec...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
なぜprotected overrideなのか
-
Strutsでチェックボックスの値...
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
public static void main (Stri...
-
StringBufferからStringへキャ...
-
YYYYMMDD書式の日付に対する適...
-
C# でメソッドに送られてきたOb...
-
シェルスクリプトからのJavaメ...
-
C# の ByVal と ByRef について
-
Fileの読み取り専用の解除
-
CSVから読み込んだデータの保持...
-
メソッドの引数に指定されてい...
-
javaに"search"という関数 or ...
-
Javaのメモリの管理
-
Java初心者です、エラーの意味...
おすすめ情報