对于想了解React中的state和props有什么区别?的读者,本文将是一篇不可错过的文章,我们将详细介绍reactprops和state区别,并且为您提供关于.NET中的struct和class有
对于想了解React中的state和props有什么区别?的读者,本文将是一篇不可错过的文章,我们将详细介绍react props和state区别,并且为您提供关于.NET中的struct和class有什么区别?、angularjs – $state和$stateProvider有什么区别?、asp.net – HttpContext的Cache和Items Properties有什么区别?、C ++中的struct和class有什么区别?的有价值信息。
本文目录一览:- React中的state和props有什么区别?(react props和state区别)
- .NET中的struct和class有什么区别?
- angularjs – $state和$stateProvider有什么区别?
- asp.net – HttpContext的Cache和Items Properties有什么区别?
- C ++中的struct和class有什么区别?
React中的state和props有什么区别?(react props和state区别)
我正在观看有关React的Pluralsight课程,并且讲师说不应更改道具。我现在正在阅读有关道具与状态的文章(uberVU / react-
guide),它说
道具和状态更改都会触发渲染更新。
文章稍后会说:
道具(属性的缩写)是组件的配置,如果可以的话,它是选项。它们是从上方接收的,并且是不变的。
- 所以道具可以改变,但它们应该是不变的?
- 什么时候应该使用道具,什么时候应该使用状态?
- 如果您有React组件需要的数据,则应通过prop或在React组件中通过setup进行设置
getInitialState
?
答案1
小编典典道具与状态有关。一个组件的状态通常会成为子组件的道具。道具将作为第二个参数传递给父对象的render方法中的子对象,React.createElement()
或者,如果您使用的是JSX,则是更熟悉的标签属性。
<MyChild name={this.state.childsName} />
父项的状态值childsName
成为子项的状态值this.props.name
。从孩子的角度来看,prop这个名字是一成不变的。如果需要更改,则父级只需更改其内部状态即可:
this.setState({ childsName: ''New name'' });
React将为您将其传播给孩子。接natural而来的自然问题是:如果孩子需要更改道具名称该怎么办?通常,这是通过子事件和父回调完成的。孩子可能会暴露一个名为的事件onNameChanged
。然后,父级将通过传递回调处理程序来订阅事件。
<MyChild name={this.state.childsName} onNameChanged={this.handleName} />
子级将通过调用(例如)将其请求的新名称作为参数传递给事件回调this.props.onNameChanged(''Newname'')
,而父级将在事件处理程序中使用该名称来更新其状态。
handleName: function(newName) { this.setState({ childsName: newName });}
.NET中的struct和class有什么区别?
.NET中的struct和class有什么区别?
#1楼
除了其他答案中描述的所有差异之外:
- 结构不能具有显式的无参数构造函数,而类可以
- 结构不能有析构函数 ,而类可以
- 结构不能从另一个结构或类继承,而一个类可以从另一个类继承。 (结构和类都可以从接口实现。)
如果您正在观看解释所有差异的视频,则可以查看第29部分-C#教程-C#中的类和结构之间的差异 。
#2楼
好吧,对于初学者来说,结构是通过值而不是通过引用传递的。 结构适合于相对简单的数据结构,而从架构的角度来看,通过多态和继承,类具有更大的灵活性。
其他人可能会给您比我更多的细节,但是当我要使用的结构很简单时,我会使用结构。
#3楼
在.NET中,结构和类声明区分引用类型和值类型。
当您绕过一种引用类型时,实际上仅存储一种。 所有访问该实例的代码都在访问同一代码。
当您传递一个值类型时,每个值类型都是一个副本。 所有代码都在自己的副本上工作。
可以用一个示例显示:
struct MyStruct
{
string MyProperty { get; set; }
}
void ChangeMyStruct(MyStruct input)
{
input.MyProperty = "new value";
}
...
// Create value type
MyStruct testStruct = new MyStruct { MyProperty = "initial value" };
ChangeMyStruct(testStruct);
// Value of testStruct.MyProperty is still "initial value"
// - the method changed a new copy of the structure.
对于一堂课,这将是不同的
class MyClass
{
string MyProperty { get; set; }
}
void ChangeMyClass(MyClass input)
{
input.MyProperty = "new value";
}
...
// Create reference type
MyClass testClass = new MyClass { MyProperty = "initial value" };
ChangeMyClass(testClass);
// Value of testClass.MyProperty is now "new value"
// - the method changed the instance passed.
类不能为空-引用可以指向null。
结构是实际值-它们可以为空,但不能为null。 因此,结构始终具有不带参数的默认构造函数-它们需要一个“起始值”。
#4楼
类的实例存储在托管堆上。 所有“包含”实例的变量只是对堆上实例的引用。 将对象传递给方法会导致传递引用的副本,而不是对象本身。
结构(从技术上讲,值类型)存储在任何使用它们的位置,就像原始类型一样。 内容可以在运行时随时复制,而无需调用自定义的复制构造函数。 将值类型传递给方法涉及再次复制整个值,而无需调用任何可自定义的代码。
C ++ / CLI名称使区分更好:“ ref class”是第一个描述的类,“ value class”是第二个描述的类。 C#使用的关键字“类”和“结构”只是必须学习的东西。
#5楼
结构是实际值-它们可以为空,但不能为null
的确如此,但是还请注意,从.NET 2开始,结构支持Nullable版本,并且C#提供了一些语法糖以使其易于使用。
int? value = null;
value = 1;
angularjs – $state和$stateProvider有什么区别?
我注意到这个应用程序有时使用依赖$state,有时使用依赖$stateProvider.
注入和使用$state和$stateProvider之间有什么区别吗?
解决方法
一个是我们一直使用的服务实例,比如$state.
另一个被称为’提供者’,就像$stateProvider一样.
‘Providers’持有公共服务的工厂功能,并负责创建相应的服务.
换句话说,$stateProvider创建$state.
从角度文档:
An Angular service is a singleton object created by a service
factory. These service factories are functions which,in
turn,are created by a service provider. The service
providers are constructor functions. When instantiated they must
contain a property called$get
,which holds the service
factory function.
当angular实例化一个模块时,它将首先创建提供者,然后它将运行’module.config’函数.
但是,$state等服务在那时并未实例化.在’module.config’完成后,它们将在需要时(例如注入其他服务)由其提供者实例化.所以你不能把服务放在module.config中.
module.service和module.factory都在创建提供程序.它们是快捷方式,因此我们可以轻松地创建服务.
asp.net – HttpContext的Cache和Items Properties有什么区别?
HttpContext
级
Cache
和
Items
属性有什么区别?
从MSDN文档:
Cache
Gets the Cache object for the current application domain.Items
Gets a key/value collection that can be used to organize and share data between an IHttpModule interface and an IHttpHandler interface during an HTTP request.
我真的不明白该文档试图解释什么.
在处理ASP.NET Web应用程序时,我经常使用Items来按请求缓存数据,这样多个用户控件最终不会从数据库中查找相同的数据.这在this article中描述.
今天,我遇到了Cache属性的用法,看起来像每个请求缓存.我试图理解差异,但找不到比较这两者的任何好的文件.所以我想知道……
HttpContext的Cache和Items属性有什么区别?请尝试详细说明为什么在不同的真实场景中选择使用其中一个的示例.
解决方法
这取决于您希望数据存在多长时间.我使用Items来存储EF中的ObjectContext或DbContext之类的东西,我只希望为该请求共享它.但是所有用户将在许多请求中使用的参考表数据,因此缓存会更好.
C ++中的struct和class有什么区别?
这个问题已经在C#/。Net上下文中提出过 。
现在,我想学习C ++中的结构和类之间的区别。 请讨论技术差异以及在OO设计中选择一个或另一个的原因。
我将从一个明显的区别开始:
- 如果您未指定
public:
或private:
:,则结构的成员默认为public; 默认情况下,类的成员是私有的。
我确信在C ++规范的晦涩之处可以找到其他差异。
#1楼
- 默认情况下,结构的成员是公共的,而默认情况下,类的成员是私有的。
- 从另一个结构或类的结构的默认继承是公共的。从另一个结构或类的结构的默认继承是私有的。
class A{
public:
int i;
};
class A2:A{
};
struct A3:A{
};
struct abc{
int i;
};
struct abc2:abc{
};
class abc3:abc{
};
int _tmain(int argc, _TCHAR* argv[])
{
abc2 objabc;
objabc.i = 10;
A3 ob;
ob.i = 10;
//A2 obja; //privately inherited
//obja.i = 10;
//abc3 obss;
//obss.i = 10;
}
这是在VS2005上。
#2楼
。 在类中,默认情况下所有成员都是私有的,而在结构中默认情况下所有成员都是公共的。
对于结构,没有像构造函数和析构函数这样的术语,但是对于类编译器,如果不提供,则会创建默认值。
空类的Sizeof结构为0字节,而空类的Sizeof为1字节结构的默认访问类型为public。 通常应将结构用于分组数据。
类的默认访问类型为private,继承的默认模式为private。 应该使用一个类对数据和对该数据进行操作的方法进行分组。
简而言之,约定是在将数据分组时使用struct,而在我们需要数据抽象甚至继承的情况下使用类。
在C ++中,除非明确取消引用,否则结构和类将按值传递。 在其他语言中,类和结构可能具有不同的语义-即。 对象(类的实例)可以通过引用传递,而结构可以通过值传递。 注意:有与此问题相关的评论。 请参阅讨论页添加到对话。
#3楼
C ++中struct和class关键字之间的区别在于,当在特定的复合数据类型上没有特定的说明符时,默认情况下struct或union是仅考虑数据隐藏的public关键字,而class是考虑程序隐藏的private关键字。代码或数据。 总是有些程序员为了代码而使用struct来存储数据和使用类 。 有关更多信息,请联系其他来源。
#4楼
从所有这些因素中,可以得出结论,概念类非常适合表示现实世界的对象,而不是“结构”。很大程度上,因为类中使用的OOP概念在解释现实世界场景时非常实用,因此更容易将它们合并为现实。例如,默认继承是结构的公共属性,但是如果将此规则应用于现实世界,这是很荒谬的。但是在类中,默认继承是private,这是更现实的做法。
无论如何,我需要证明的是,类是一个更广泛的,在现实世界中适用的概念,而结构是一个内部组织较差的原始概念(Eventhough结构遵循OOP概念,它们的含义很差)。
#5楼
类是引用类型,结构是值类型。
当我说类是引用类型时,
基本上,它们将包含实例变量的地址。
例如:
Class MyClass
{
Public Int DataMember; //By default, accessibility of class data members
//will be private. So I am making it as Public which
//can be accessed outside of the class.
}
在主要方法中
我可以使用为该类分配内存的新运算符创建该类的实例
并将其基地址存储到MyClass类型变量(_myClassObject2)中。
Static Public void Main (string[] arg)
{
MyClass _myClassObject1 = new MyClass();
_myClassObject1.DataMember = 10;
MyClass _myClassObject2 = _myClassObject1;
_myClassObject2.DataMember=20;
}
在上面的程序中,MyClass _myClassObject2 = _myClassObject1; 指令指示两个MyClass类型的变量
- myClassObject1
- myClassObject2
并将指向相同的内存位置。
它基本上将相同的内存位置分配给另一个相同类型的变量。
因此,如果我们对MyClass类型的任何一个对象进行的任何更改都会对另一个对象产生影响
因为两者都指向相同的存储位置。
“ _myClassObject1.DataMember = 10;” 在此行,对象的两个数据成员都将包含值10。
“ _myClassObject2.DataMember = 20;” 在此行,对象的数据成员都将包含值20。
最终, 我们通过指针访问对象的数据成员。
与类不同,结构是值类型。 例如:
Structure MyStructure
{
Public Int DataMember; //By default, accessibility of Structure data
//members will be private. So I am making it as
//Public which can be accessed out side of the structure.
}
Static Public void Main (string[] arg)
{
MyStructure _myStructObject1 = new MyStructure();
_myStructObject1.DataMember = 10;
MyStructure _myStructObject2 = _myStructObject1;
_myStructObject2.DataMember = 20;
}
在上面的程序中
使用new运算符实例化MyStructure类型的对象
将地址存储到MyStructure类型的_myStructObject变量中,并
使用“ _myStructObject1.DataMember = 10”将值10分配给结构的数据成员。
在下一行中
我声明了另一个MyStructure类型的变量_myStructObject2,并将_myStructObject1分配给它。
.NET C#编译器在这里创建_myStructureObject1对象的另一个副本,并
将该内存位置分配给MyStructure变量_myStructObject2。
因此,无论我们对_myStructObject1进行的更改如何,都永远不会对MyStructrue类型的另一个变量_myStructObject2产生影响。
这就是为什么我们说结构是值类型。
因此,该类的直接基类是Object,而Structure的直接基类是ValueType,它从Object继承。
类将支持继承,而结构则不支持。
我们怎么说呢?
那是什么原因呢?
答案是班级。
它可以是抽象的,密封的,静态的和部分的,并且不能是私有的,受保护的和受保护的内部。
今天的关于React中的state和props有什么区别?和react props和state区别的分享已经结束,谢谢您的关注,如果想了解更多关于.NET中的struct和class有什么区别?、angularjs – $state和$stateProvider有什么区别?、asp.net – HttpContext的Cache和Items Properties有什么区别?、C ++中的struct和class有什么区别?的相关知识,请在本站进行查询。
本文标签: