回 帖 发 新 帖 刷新版面

主题:C#中如何解决返回整数数组

在c#中,如果返回类型为整数数组,则值为System.int32[],如何解决,不希望通过for循环语句实现。而是作为一个整体返回。请高手指点。
如下列源代码:
int[ ] f(int[ ] a) 
{
int k=a.Length;
if(a.length<0)
{
return null;
}
else
{
for (int i=0; i<a.lengtha; i++)
  {                
if (a[i]%2 == 0)
{
a[i]=0;
}
  int [] ser = new int[];
for (int i=0,j=0;i<k;i++,j++)
{
if(a[j]!=0)
{
ser[j]=a[i];
}
}    
return ser;
}
ConsoleApplication12.Class1 t= new ConsoleApplication12.Class1( );
System.Console.WriteLine(t.f(new int[]{1,3,9}));
但输出的结果为:System.int32[]。
请高手指点迷津,小第不胜感激。

回复列表 (共3个回复)

沙发

using System;

class Test
{
    static void Main(string[] args)
    {
        int[] arr = new int[5] {1, 2, 3, 4, 5};
        foreach(int o in arr)
            Console.WriteLine(o);
    }
}

板凳

C# 3.0即将支持对象类扩展方法,你这种设想目前无法实现。
必须手动定制方法。

3 楼

[quote]C# 3.0即将支持对象类扩展方法,你这种设想目前无法实现。
必须手动定制方法。[/quote]
C#3.0已经有了
[url=http://msdn2.microsoft.com/zh-cn/vstudio/aa700831.aspx]http://msdn2.microsoft.com/zh-cn/vstudio/aa700831.aspx[/url]

[url=http://blog.csdn.net/ghj1976/archive/2007/06/06/1640347.aspx]http://blog.csdn.net/ghj1976/archive/2007/06/06/1640347.aspx[/url]
扩展方法的定义,需要注意三个部分:1、静态类(私有公共都可以);2、静态方法(私有公共都可以);3、第一个函数参数前带 this(必须是第一参数前) 

[url=http://msdn2.microsoft.com/en-us/library/system.array.aspx]http://msdn2.microsoft.com/en-us/library/system.array.aspx[/url]
C#
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Array : ICloneable, IList, ICollection, 
    IEnumerable

在3.0里也是无法实现的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册