在这个问题的背面有点询问out参数的行为,但更关注的是为什么这些TryParse方法使用out而不是ref.
在某些情况下,您确实希望在解析之前初始化参数的值,并在解析失败时保留该值但不关心它是否失败.但是由于out参数,值被重置.
这种情况看起来像这样......
int arg = 123;
Int32.TryParse(someString, ref arg);
Run Code Online (Sandbox Code Playgroud)
但是由于out参数我们必须这样写,这更详细...
int arg;
if(!Int32.TryParse(someString, out arg)
{
arg = 123;
}
Run Code Online (Sandbox Code Playgroud)
我知道知道解析失败可能非常有用,但使用ref并不排除这一点.
那么为什么这些TryParse方法使用out而不是ref?
使用flutter,我已经安装了firebase-auth和firestore包,并且能够使用firebase auth进行身份验证,并且只要我没有围绕用户的任何规则就可以调用firestore.
我有一个调用的按钮,_handleEmailSignIn我确实得到了一个有效的用户(因为他们在Firebase Auth DB中)
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
final FirebaseAuth _auth = FirebaseAuth.instance;
void _handleEmailSignIn(String email, String password) async {
try {
FirebaseUser user = await _auth.signInWithEmailAndPassword(
email: email, password: password);
print("Email Signed in " + user.uid); // THIS works
} catch (err) {
print("ERROR CAUGHT: " + err.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有另一个按钮调用此函数来尝试将记录添加到testing123集合中.
Future<Null> _helloWorld() async {
try {
await Firestore.instance
.collection('testing123')
.document()
.setData(<String, String>{'message': 'Hello world!'});
print('_initRecord2 DONE');
} …Run Code Online (Sandbox Code Playgroud) dart firebase firebase-authentication flutter google-cloud-firestore
当我尝试反序列化soap消息时,我得到以下异常.我这样做是因为我有我想在测试中重用的响应文件.我不能使用真实的服务或类似的东西,因为它不适合我们的测试框架的架构.
Test 'MyUnitTestMethod' failed: System.InvalidOperationException : There is an error in XML document (1, 2).
----> System.InvalidOperationException : <MySpecialResponse xmlns='http://xsd.com/msgs/v1'> was not expected.
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream)
private const string _content =
@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">
<soapenv:Body>
<ns3:MySpecialResponse xmlns:ns3=""http://xsd.com/msgs/v1"" >
<header>
<status>0</status>
</header>
<ns3:Payload>
<ns3:CustomerName>name</ns3:CustomerName>
<ns3:EmailAddress>test1@mail.com</ns3:EmailAddress>
</ns3:Payload>
</ns3:MySpecialResponse>
</soapenv:Body>
</soapenv:Envelope>";
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3082")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://xsd.com/msgs/v1")]
public partial class MySpecialResponse : BaseResponse {
private MySpecialPayload payloadField;
/// <remarks/> …Run Code Online (Sandbox Code Playgroud) 我需要在下面的图标上插入onpressed()函数(导航器推至其他页面):
Column buildButtonColumn(IconData icon, String label) {
Color color = Theme.of(context).primaryColor;
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, color: color),
Container(
margin: const EdgeInsets.only(top: 8.0),
child: Text(
label,
style: TextStyle(
fontSize: 12.0,
fontWeight: FontWeight.w400,
color: color,
),
),
),
],
);
}
Widget buttonSection = Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildButtonColumn(Icons.call, 'CALL'),
buildButtonColumn(Icons.near_me, 'ROUTE'),
buildButtonColumn(Icons.share, 'SHARE'),
],
),
);
Run Code Online (Sandbox Code Playgroud) 我已经使用TFS API库一段时间了,并且在与TFS 2010连接时使用了以下代码来获取迭代路径(来自此页面的代码)...
public IList<string> GetIterationPaths(Project project)
{
List<string> iterations = new List<string>();
foreach (Node node in project.IterationRootNodes)
AddChildren(string.Empty, node, iterations);
return iterations;
}
private void AddChildren(string prefix, Node node, List<string> items)
{
items.Add(node.Path);
foreach (Node item in node.ChildNodes)
AddChildren(prefix + node.Name + "/", item, items);
}
Run Code Online (Sandbox Code Playgroud)
当我在TFS 2013中查看所有迭代时,事情发生了变化.在TFS 2013中,迭代的概念略有改变,而TFS 2013的API程序集则没有IterationRootNodes
我使用以下代码来获得团队迭代,但这是基于团队的,而不是针对项目的完整迭代集...(目前获得第一个团队但可以编码以获得其他团队)
var cred = new TfsClientCredentials(new WindowsCredential(), true);
TfsTeamProjectCollection coll = new TfsTeamProjectCollection("{URI to SERVER}", cred);
coll.EnsureAuthenticated();
var teamConfig = coll.GetService<TeamSettingsConfigurationService>();
var css = coll.GetService<ICommonStructureService4>();
var …Run Code Online (Sandbox Code Playgroud)