private double []aaa()
{
b = new double [12];
....
return b;
}
我知道,在C语言里,这样做是不对的。
请问:C#里这么做有问题吗?
如果想返回数组,只能这样做吗?
private double []aaa(ref double []b)
{
}
谢谢!
{
b = new double [12];
....
return b;
}
我知道,在C语言里,这样做是不对的。
请问:C#里这么做有问题吗?
如果想返回数组,只能这样做吗?
private double []aaa(ref double []b)
{
}
谢谢!
解决方案 »
- C#入门基础学习的两个好网站,献给大家。
- 大家都用什么版本控制软件??
- 请问access中的长整型在C#中应该用int还是long来保存,或者是其它的
- C++结构类型转C#结构类型
- 我该如何获得当前程序的所有 的线程,并进行关闭?引用 Knight94(愚翁)
- c#附加数据库错误
- 为什么系统的DLL可以直接DllImport,我自己的DLL就不可以,等待高手ing...
- 有一个搞不了的问题, 关于编译的
- VC++.NET或者C#,选择哪种比较好呢?
- 本来用Contains输入是C;G的后来又换成 AD 用indexof这个 我不太会 怎么改啊 怎么改
- c#入门电子书
- 无聊发几张PP——论图像的黑白处理
{
double b = new double [12];
//....
return b;
} 没问题啊.调用:double[] d=aaa();
//方法有很多种,如,(一般用集合或键值对的居多)
double[] b = new double[12];
private void aaa(out double[] b)
{
//....
}
private double[]/*返回值类型为double数组*/ getArray()
{
double[] arr = new double[12];//声明double类型数组
return arr;//返回
}
using System.Collections.Generic;
using System.Text;namespace CAArray1
{
class Program
{
static void Main(string[] args)
{
int[] a ={ 3, 5, 7, 9 };
HandleArray(a);
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
Console.ReadKey();
} static void HandleArray(int[] b)
{
for (int i = 0; i < b.Length; i++)
{
if (i % 2 == 0) b[i] += 1;
}
}
}
}
上面的代码输入的是
4
5
8
9
类似的,C#也有作用域的问题,数组在子程序内申明,在子程序返回时应该自动回收内存的。所以直接返回在子程序内申明的数组似乎有问题,即使运行的结果正确。
实际上,C#返回的就是一个指针,子程序完成后,该指针所指的空间应该自动回收了。不知道我的理解对不对?
想确认一下各位高手的看法:到底这样返回数组是否存在隐患?
看下托管C++(Managed C++)或者C++ CLI语言,应该就能对复杂的内存管理有印象了
栈、堆、托管堆这三个东西要分清然后注意C、C++本质上都是拷贝传值而C#分值类型和引用类型分开处理不难,但要想清楚了