String s = new String(char c, int count)

解决方案 »

  1.   

    dim s as string = String.Empty.PadRight(260)actually it is meaningless to fix a width for a string in .NET, consider to use
    dim clist(259) as char
      

  2.   

    string[] s =new string[260];
      

  3.   

    string[] s =new string[260];
      

  4.   

    string[] s =new string[260];
      

  5.   

    同意saucer(思归, MS .NET MVP) ( ) 
    string str=string.Empty.PadRight(260);
      

  6.   

    可惜都不行啊 
    To 思归先生 我想得到的是C#的东西啊 
    To 浪子等 我不需要数组
    To 北方的天空 我是在struct中定义的,你的方法不行,况且你的方法只对char c有效,对整体string无效痛苦中...
    不然还是不学C#了
    控件不好用,API也引用不了(只因为string大小不定)
    还是转行吧
      

  7.   

    To 思归先生 我是在struct中定义的,你的方法不行
      

  8.   

    我想我应该在这里作一下总结:)
    我不是赞同saucer的用定长初始化串的程序做法,而是严重同意他的说法:)确实,给.NET中的一个string类型的变量固定宽度是没有意义的。你固定的只是初始化串的长度,你依然可以通过给这个串重新赋值(任意长度的串)来改变你定义的串的长度:
    比如:
    string ssa = string.Empty.PadRight(20);
    MessageBox.Show(ssa);//20个空格
    MessageBox.Show(ssa.Length.ToString());//20
    ssa = "123456789012345678901";//21个字符的串
    MessageBox.Show(ssa);//正确,显示上面的串
    MessageBox.Show(ssa.Length.ToString());//21string ss1 = new string('A',18);//18
    MessageBox.Show(ss1);
    ss1 = "1234567890123456789";//19
    MessageBox.Show(ss1);
    MessageBox.Show(ss1.Length.ToString());因此,我们只能说用固定长度初始化一个字符串的做法存在以下几种:
    1、String s = new String(char c, int count) //ju_feng(NorthSky) 
    2、string ssa = string.Empty.PadRight(20);  //saucer
    3、string ssa = "      "//x个空格的串 :)确实没有意义而至于 string[] s =new string[260];,只是定义了一个数组,每个数组的元素都是string类型,贴在这里大概是象告诉搂主如何使用数组吧因此,如果搂主一定要使用定长的串的话,还是saucer的建议,用字符数组吧:)
    char[] sss = new char[260]; 完毕,请大家指教:)
      

  9.   

    string[] s =new string[260];这个是不行的,只是申明了260个string
    把一个string 指定长度有什么意义吗?
    如果是这样,还不如用char[]
      

  10.   

    首先,一些API的接口是需要固定string长度,所以我提出了这个问题。
    其次初始化string才是没有意义的(如果你了解内存定义的话)。
    我的例证如下:
    string aaa;  len后得知aaa长度为0
    char[260];循环相加后  len aaa长度为260
    但是len 整体struct时,结果却令人大跌眼镜,虽然aaa长度为260,但包含aaa的struct长度仍为0
    在vb中可以有如下声明:dim aaa as string * 260,它的作用就是规定了aaa的长度为定长,且等于260,所以使我产生了对c#的疑问
    尽管大家都很努力,我的方案仍无法实现
      

  11.   

    同意csdn_bob(文子),固定长度的话那还用STRING干嘛,用char[]就是了。
      

  12.   

    String对象是作为不边对象使用的,即对象一建立,其长度是不变的,如果这时定义另一个相同的String对象,则不会内存中新生成这个String对象,只是增加一个对原String对象的引用。
    如果定义了一个String对象,改变其长度则会生成一个全新的String对象,所以要使用变长的字符串应该使用StringBuilder.
      

  13.   

    To 楼上的高人 你是从java那过来的吧
      

  14.   

    seehttp://msdn.microsoft.com/library/en-us/cpguide/html/cpcondefaultmarshalingforstrings.asp?frame=truesomething like[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
    struct StringInfoW {
       [MarshalAs(UnmanagedType.LPWStr)] public String f1;
       [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] public String f2;
       [MarshalAs(UnmanagedType.BStr)] public String f3;
    }
      

  15.   

    StringBuilder sTmp = new StringBuilder(255);
      

  16.   

    you should mention the API before, seehttp://www.wintoolzone.com/articles/pinvoke.asp
      

  17.   

    StringBuilder sTmp = new StringBuilder(255);这个很好的StringBuilder类 大家应该看看
      

  18.   

    谢谢思归先生的解答,终于不再郁闷了,答案贴出,以供分享:
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] public string szExeFile;