C#/Linq高手来看看这个Cast<int>为什么会失败?

//下面的程序是把字符串数组转换为数字后再乘以2staticvoidMain(string[]args){string[]ss={"11","22","33"};//为什... //下面的程序是把字符串数组转换为数字后再乘以2
static void Main(string[] args)
{
string[] ss = { "11", "22", "33" };
//为什么Cast无效?Cast的用法不是这样的?
var v = ss.Cast<int>().Select(x => x * 2);
foreach (int i in v)
Console.WriteLine(i);
Console.ReadLine();
}
展开
 我来答
lujiaxing
推荐于2018-03-23 · TA获得超过672个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:229万
展开全部
当然会失败了。Cast是在可转换类型之间进行转换。比如父类型转子类型,数字类型之间互相转。但是你传进去的都是字符串。州弯字符串是数字吗?字符串的内容包含数字不等于字符串就是数字。你把两个不相销念干的类型互转当然会失败。亏迹困像这种情况应该是parse.
var v = ss.Select(x => Int32.Parse(x) * 2);
建议你去仔细研究下 parse 和 cast 这两个概念的差异。
freeeeeewind
2014-11-23 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1302万
展开全部
    class Program
    {
        static void Main(string[] args)
        {
            string[] ss = { "11", "22", "33" };
            var v = ss.Cast<string>().Select(x => int.Parse(x) * 2);
        御陆    foreach (int i in v)
            {
                Console.WriteLine(i);
            }
 链拆蔽   棚州    }
    }

 或者,更简单的Linq写法

var v = ss.Select(x => int.Parse(x) * 2);

注意:Cast只能“同类型转换",或者"向上转换”即转换成基类,如object

追问
我就是在问为什么不能正确运行,没问如何实现转成int。
追答
Cast只能“同类型转换",或者"向上转换”即转换成基类,如object
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式