注册 登录
编程论坛 C# 论坛

方法返回不同类型的值

sjm_sun 发布于 2018-10-16 11:15, 2615 次点击
public struct individuals
    {
        public double[] fitness;
        public double[,] chrom;
        
    }
    class Program
    {
        static double[] SUM(double[] a,double[,] b,int c,int d ,out double[,] e)
        {
            e = new double[c, d];
            for (int i = 0; i < c; i++)
                for(int j=0;j< d;j++)
            {
                    e[i, j] = b[i, j];
            }
        return a  ;
            
        }
        static void Main(string[] args)
        {
            individuals L = new individuals();
            L.fitness=new double[6];
            for (int i = 0; i < 6; i++)
            { L.fitness[i] = 0.1 * i;
            }
           
            L.chrom = new double[,] { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
           
           SUM(L.fitness,L.chrom,6,3,out double[,] e);

           
        }
    }
}
我要返回结构individuals
他的内容有一个一维数组(1行6列)fitness和一个二维数组(6行3列)chrom,
我想写一个方法直接返回结构体individuals或者同时返回fitness和chrom
2 回复
#2
happyhorseCS2018-11-18 21:13
方法返回值只有一个,可以直接返回结构,也可以用Out,或ref输出,这样可以相当于输出两个值。
你试试、
#3
oldSlave2019-01-08 08:51
程序代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace consoleTest01
{
    public struct individuals
    {
        public double[] fitness;
        public double[,] chrom;

    }
    class Program
    {
        private static individuals getIndividuals()
        {
            individuals L = new individuals();
            L.fitness = new double[6];
            for (int i = 0; i < 6; i++)
            {
                L.fitness[i] = 0.1 * i;
            }

            L.chrom = new double[,] { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
            return L;

        }
        static double[] SUM(double[] a, double[,] b, int c, int d, out double[,] e)
        {
            e = new double[c, d];
            for (int i = 0; i < c; i++)
                for (int j = 0; j < d; j++)
                {
                    e[i, j] = b[i, j];
                }
            return a;

        }
        static void Main(string[] args)
        {
            individuals L=getIndividuals();
            int i = 6;
            int j = 3;
            double[,] e=new double[i,j];
            var result = SUM(L.fitness,L.chrom,i,j, out e);
            foreach (double d in result)
            {
                Console.WriteLine(d);
            }
        }
        
    }
}
1