No.2ベストアンサー
- 回答日時:
できなくはありません。
bool型をToString()などで文字列に変換すれば全て文字列の配列として返すことはできますが、プログラムの作りとしては良くないプログラムの典型になってしまいます。複数の値を返したい場合は、他の人が書いているように専用のクラスを作成して、それを使って返すようにする方法が良いと思います。(場合によっては、メソッドの粒度や役割が適切かどうか見直しも必要です。1つのメソッドで複数の処理を行わせようとすると、複雑なコードになりがちです)
専用のクラスを使う方法であれば、boolとstring型を格納するResultItemというクラスを作成し、
public class ResultItem{
public bool IsSuccess{get;set;}
public string Message{get;set;}
}
これを、メソッドの中で返すようにします。
public ResultItem YourMethod(){
ResultItem item = new ResultItem();
// 処理
item.IsSuccess = true;
item.Message = "関数内で取得した文字列など";
return item;
}
この回答へのお礼
お礼日時:2014/11/01 13:03
アドバイスありがとうございます。
bool型をToString()、まさしく最初はこのやり方で切り抜けようと思っていました。
皆さんのを参考にしていきます。
今回は最初に回答してくださった方をベストアンサーとさせていただきます。
No.6
- 回答日時:
> もし返したい bool 型が関数処理の成否を表すもので、関数を使う側がその戻り値を
> 必ず確認しないとまずい場合は、関数の戻り値を string のみにして失敗時に例外を
> 投げるようにしたほうがいいです。
あるいはこんな:
using System;
public class Program {
static bool fun(int n, out string result) {
result = "???";
if ( n == 0 ) return false;
if ( n > 0 )
result = "正";
else
result = "負";
return true;
}
public static void Main() {
bool nonzero;
string result;
nonzero = fun(0,out result);
if ( nonzero ) Console.WriteLine(result);
nonzero = fun(1,out result);
if ( nonzero ) Console.WriteLine(result);
nonzero = fun(-1,out result);
if ( nonzero ) Console.WriteLine(result);
}
}
No.5
- 回答日時:
(episteme 氏の回答を見て)
……いかん、pair だけしか単語が思いつかなかった……
という事は置いといて、ふと気になったことをアドバイス。
もし返したい bool 型が関数処理の成否を表すもので、関数を使う側がその戻り値を必ず確認しないとまずい場合は、関数の戻り値を string のみにして失敗時に例外を投げるようにしたほうがいいです。さらにもし string がエラー内容を表すものなら戻り値なしにしてその string 込みで例外を投げるように。
No.4
- 回答日時:
object型の配列として返せば可能だと思いますよ
object[] myFunc(int nTest)
{
// 戻り用の変数の準備
object[] objRet = new object[2];
// 偶数ならtrue 奇数ならfalse
objRet[0] = (nTest % 2) == 0;
// 10を超えていれば『over ten 10以下ならば『under ten』の文字列
objRet[1] = (nTest>10) ? "over ten" : "under ten";
return objRet;
}
呼び出し元では
object[] oResult;
oResult = myFunc(11);
// oResult[0]:false
// oResult[1]:over ten
といった具合です
No.3
- 回答日時:
System.Tupleを返してはいかがかと。
using System;
public class Program {
static Tuple<bool,string> fun(int n) {
if ( n %2 == 0 )
return Tuple.Create(true,"偶数");
else
return Tuple.Create(false,"奇数");
}
public static void Main() {
Tuple<bool,string> result;
result = fun(1);
Console.WriteLine("{0}:{1}", result.Item1, result.Item2);
result = fun(2);
Console.WriteLine("{0}:{1}", result.Item1, result.Item2);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 基礎的な質問なのですが、Excel VBAで、B列、C列、それぞれの値を照合し、D列へ照合結果(一致 3 2022/04/02 17:14
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Excel(エクセル) 2から100までの自然数について素数であるか判定したいです。シートのA列には自然数の値、B列には判定 2 2022/11/17 10:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
配列の中に複数存在する数がい...
-
『args[]』とは?
-
Javaで文字と数字が混ざったも...
-
この警告はどうすれば?
-
Java配列の問題を教えてくださ...
-
ランダムでのboolean値の与え方
-
配列で、値の入っている要素数...
-
javaについて
-
MAPの配列・・・???!!!
-
2次元配列のコピー
-
【C#】ハッシュテーブル(連想...
-
n番目に大きな値を探索する
-
CSVファイルの、列だけ取得したい
-
main(String[] args) の args...
-
java
-
セッションを使ったint型の値の...
-
動的配列確保
-
多次元配列はなぜ必要???
-
String型をbyte型へ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
C#で動的配列Listの中身をListB...
-
javaで大容量テキストファイル...
-
C言語でunsigned char配列を連...
-
n番目に大きな値を探索する
-
JavaのBase64デコードで正しく...
-
配列で、値の入っている要素数...
-
Javaで文字を漢字であるか否か...
-
配列の中に複数存在する数がい...
-
データベースから取得したデー...
-
【C#】ハッシュテーブル(連想...
-
Javaで文字と数字が混ざったも...
-
cloneメソッドについて (java)
-
ArrayListからBean配列に値をセ...
-
配列をセッションに割り当てた後で
-
int配列をbyte配列に変換
-
セッションを使ったint型の値の...
-
javamailで複数人にメールを送...
-
【Ajax通信&Java】配列の受け取...
おすすめ情報