string str=“xshdjd”中str是对象还是变量

string str=“今天是个好天气”;
char[] chr=str.ToCharArray();
为什么可以用str调用方法,它不是变量吗?我明白实例函数的调用是对象点方法(),但str为什么可以当做对象?
c#

c#是面向对象的编程语言
万物皆对象
类是对象,函数是对象,变量当然也是对象
string类型背后是String类,String类的实例能调用类里的方法不很正常吗
string str=“今天是个好天气”;其实就是个语法糖
它实际上执行的是
String str=new String(“今天是个好天气”);
类似的,int类型背后是Int32,所以你定义一个int a,就可以执行a.ToString()方法,是一样的道理

因为str.ToCharArray()本身就是字符串函数,你用string 命名str相对于string它就是对象所以它可以调用函数,对于其他的它就是变量