As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
When doing DateTimeConverter.ConvertFromString(" ") it gives back a DateTime.MinValue. You can have as many blank spaces as you want and it still works. If you give it an empty string, it will return null, which I would expect.
This behavior is different than all the other TypeConverters that will either return null or throw an exception.
This is also different than the behavior of DateTime.TryParse(" ") which returns false meaning it didn't work.
I would expect the ConvertFrom method to behave the same as the TryParse method where it should fail if there is an empty or whitespace string.
Why does it do this? Is this a bug?
I'm doing some type conversion and this is a situation where I'm getting unexpected/inconsistent behavior. Is there a way to reliably do type conversion that works for all types? Or do I need to put a special clause in for the DateTime case?
if( typeConverter is DateTimeConverter )
{
// Check if the value is a white space string.
}
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Everytime I have to access arrays via index, it bugs me that I have to check that I am not creating IndexOutOfRange Exceptions.
I get why arrays throw an exception instead of just returning null. That would be cool because I could use the ?? operator, but ok these are legacy types and I am fine with it.
But why did the BCL Team not implement TryGet(int index, out T value)
like they did with, for example, List<T>?
From my understanding, they could have put this into the Linq Extensions as Array already implements IEnumerable
You need to turn your thinking around - it is throwing IndexOutOfRangeException because you should not be accessing those indexes in the first place.
Instead, you should check the array length before you access the index:
string value = null;
if (i < array.Length) value = array[i];
or
for (int i=0; i<array.Length; i++) {
...
}
IndexOutOfRangeException is classed as a boneheaded exception - if it is being thrown, you are doing something wrong.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
In c#, how can I find a specefic character in a string. this "2222+2222" is my string and I want to find the character "+" in it? I want a function that returns a bool if it finds it.
string.Contains("+") returns a bool.
yourString.IndexOf("+") will return 0 or a positive number if the character is found
Since you prefer something that returns bool, you can use Contains instead but notice that Contains does not provide an overload to perform a case-insensitive search. In scenarios where this is important (finding a string without caring for case), it's best to use IndexOf(stringToSearch,StringComparison.InvariantCultureIgnoreCase) to determine whether the string is found or not.
String s = "2222+2222";
if (s.Contains("+")) {
// dosomething...
}
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I would like to know which way is better and faster for the following scenarios.
string dateStart = ((DateTime)dtRow["StartDate"]).ToShortDateString();
or
string dateStart = DateTime.Parse(dtRow["StartDate"].ToString()).ToString("dd/MM/yyyy")
If the type of value stored in the StartDate column of data-table is already DateTime, the first one is faster than the second. Otherwise we can't compare them, because the first one crashes.
Cast is doubtfully better because is only appropriate way if underlying data is type of DateTime or compatible.
Second way converts DateTime to String and then back to DateTime what is pointless.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm new to C#. Can anybody explain the following lines:
string value = "";
string tempValue = "=Fields!{0}.Value";
value = RemoveSpace(ReportDataTable.Columns[i].ColumnName);
value = String.Format(tempValue, value);
You need to read about string.Format which replaces each format item in a specified string with the text equivalent of a corresponding object's value.
RemoveSpace would be some method like Trim() to remove the space around the string.
you are formatting the value according to tempValue format, where {0} is place holder
for more info on string format see this
I assume that you want this line to be explained:
value = String.Format(tempValue, value);
String.Format creates strings from a pattern and values. It is a static method in the C# language. It receives a format string that specifies where the following arguments should inserted. The format string uses substitution markers.
So string.Format replaces the "{0}" in this string "=Fields!{0}.Value" with your value.
Side-note: you can (should) always consult MSDN first. Just type the method into google and the first link is probably the documentation.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am updating records. But It gives error
Error converting data type varchar to numeric
Here is the query:
UPDATE tbl_Contract_QutationDetails SET DCont_Discount_Var=23
WHERE DCont_Qty_Code_Var='BLDG/CNQT/11-12/101' AND DCont_Contractor_Code_Var='CNTT1001'
Please give me solution.
I would suggest you first check the column definitions against the data youre passing them and them.
What the error is saying (assuming its triggered by that piece of sql) is that there is some number column youre working with but youre passing the data as a string and that string doesnt represent a number. So,
DCont_Discount_Var=23
Are you sure DCont_Discount is a number? (Seems the answer is yes)
DCont_Qty_Code_Var='BLDG/CNQT/11-12/101'
Are you sure DCont_Qty_Code_Var is a string?
DCont_Contractor_Code_Var='CNTT1001'
Are you sure DCont_Contractor is defined as string?
One of these columns is defines as something numeric, i'd wager
My guess is DCont_Discount_Var=23 should be DCont_Discount_Var='23'